From 784896ae1e98ebc38bb0f206767700fecf1c4abb Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 14 Oct 2008 02:00:11 +0000 Subject: [PATCH] =?utf8?q?Bug=20552318=20=E2=80=93=20menubar=20mnemonics?= =?utf8?q?=20consumed=20even=20when?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2008-10-13 Matthias Clasen Bug 552318 – menubar mnemonics consumed even when gtk-enable-mnemonics=false * gtk/gtkwindow.c (gtk_window_activate_key): Don't let mnemonic entries block accelerator activation when gtk-enable-mnemonics is FALSE. Problem reported by Andreas Moog. svn path=/trunk/; revision=21648 --- ChangeLog | 9 +++++++++ gtk/gtkwindow.c | 38 ++++++++++++++++++++++---------------- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 334c2b6760..a79607499b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-10-13 Matthias Clasen + + Bug 552318 – menubar mnemonics consumed even when + gtk-enable-mnemonics=false + + * gtk/gtkwindow.c (gtk_window_activate_key): Don't let mnemonic + entries block accelerator activation when gtk-enable-mnemonics is + FALSE. Problem reported by Andreas Moog. + 2008-10-13 Cody Russell * test/testfilechooser.c: Fix option parsing so that -a and diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index a276ed64da..f83b4513ad 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -8028,6 +8028,8 @@ gtk_window_activate_key (GtkWindow *window, { GtkKeyHash *key_hash; GtkWindowKeyEntry *found_entry = NULL; + gboolean enable_mnemonics; + gboolean enable_accels; g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE); g_return_val_if_fail (event != NULL, FALSE); @@ -8036,39 +8038,43 @@ gtk_window_activate_key (GtkWindow *window, if (key_hash) { + GSList *tmp_list; GSList *entries = _gtk_key_hash_lookup (key_hash, event->hardware_keycode, event->state, gtk_accelerator_get_default_mod_mask (), event->group); - GSList *tmp_list; + + g_object_get (gtk_widget_get_settings (GTK_WIDGET (window)), + "gtk-enable-mnemonics", &enable_mnemonics, + "gtk-enable-accels", &enable_accels, + NULL); for (tmp_list = entries; tmp_list; tmp_list = tmp_list->next) { GtkWindowKeyEntry *entry = tmp_list->data; if (entry->is_mnemonic) - { - found_entry = entry; - break; - } + { + if (enable_mnemonics) + { + found_entry = entry; + break; + } + } + else + { + if (enable_accels && !found_entry) + { + found_entry = entry; + } + } } - - if (!found_entry && entries) - found_entry = entries->data; g_slist_free (entries); } if (found_entry) { - gboolean enable_mnemonics; - gboolean enable_accels; - - g_object_get (gtk_widget_get_settings (GTK_WIDGET (window)), - "gtk-enable-mnemonics", &enable_mnemonics, - "gtk-enable-accels", &enable_accels, - NULL); - if (found_entry->is_mnemonic) { if (enable_mnemonics) -- 2.30.2